<?php 
/**
 * mysql.php  mysql系列操作函数
 */

/**
 * 连接数据
 * @return resource/false 成功返回一个资源/失败返回false
 */
function mConn(){
	//静态变量
	static $conn=null;
	if($conn === null){
		$cfg = include(ROOT.'/lib/config.php');
		$conn = mysql_connect($cfg['host'],$cfg['user'],$cfg['password']);
		mysql_query('use '.$cfg['db'],$conn);
		mysql_query('set names '.$cfg['charset'],$conn);
	}
	return $conn;
}
//mysql_query($sql,mConn());

/**
 * 执行sql语句
 *
 * @param string $sql
 * @return mixed 返回布尔类型/资源
 */
function mQuery($sql){
	$rs = mysql_query($sql,mConn());
	if($rs == false){
		mLog($sql.mysql_error());
		return $rs;
	}
	mLog($sql);
	return $rs;
}
//var_dump(mQuery("select * from cat"));
//记录log日志函数
/**
 * 记录执行的sql以及出错信息
 * @param  $log 记录的信息
 */
/*
function mLog($log){
	$path = ROOT.'/log/'.date('Ymd',time()).'.txt';
	$head = '----------------------------------------------------------------'."\n".date('Y/m/d H:i:s',time())."\n";
	file_put_contents($path,$head.$log."\n"."\n",FILE_APPEND);
}
*/

function mLog($log){
	$path = ROOT.'/log/'.date('Ymd',time()).'.txt';
	$head = '----------------------------------------------------------------'."\n".date('Y/m/d H:i:s',time())."\n".$log."\n----------------------------------------------------------------\n\n";
	file_put_contents($path,$head,FILE_APPEND);
}

/**
 * 查询select语句并返回多行,适用于查询多条数据
 *
 * @param string $sql select语句
 * @return miexed array 查询正常返回二维数组,没查到返回false
 */
function mGetAll($sql){
	$rs = mQuery($sql);
	if(!$rs){
		return false;
	}else{
		$arr = array();
		while($row = mysql_fetch_assoc($rs)){
			$arr[] = $row;
		}
	}
	return $arr;
}
/* 
$sql = "select * from cat";
print_r(mGetAll($sql));
*/
/**
 * 查询select语句,并返回一行
 *
 * @param string $sql select语句
 * @return mixed array 查询到返回一维数据,未查到返回false
 */
function mGetRow($sql){
	$rs = mQuery($sql);
	return $rs?mysql_fetch_assoc($rs):false;
}
// $sql = "select * from cat where cat_id=2";
// print_r(mGetRow($sql));

/**
 * 查询select语句返回一个单元
 *
 * @param string $sql select语句
 * @return mixed string 返回一个标量值/没查到返回false
 */
function mGetOne($sql){
	$rs = mQuery($sql);
	if(!$rs){
		return false;
	}else{
		$row = mysql_fetch_row($rs);
		return $row[0];
	}
}
//insert into xxx (XXX1,XXX2,XXX3) values('xxx1','xxxx2','xxx3');

/**
 * 拼装sql语句并发送查询
 *
 * @param string $table 要插入的表名
 * @param array $data 要插入或者修改的数据,键是列名,值就是新值
 * @param string $act 要插入还是更新,默认insert或者update.其他参数报错
 * @param string $where 防止update语句忘了加where,默认0,你要填,必须填XX=xxx
 */
function mExec($table,$data,$act='insert',$where='0'){
	if($act=='insert'){
		$sql = 'insert into '.$table.'(';
		$sql.= implode(',',array_keys($data)).") values ('";
		$sql.= implode("','",array_values($data))."')";
		return mQuery($sql);
	}elseif($act=='update'){
		//update xxx set xxx1='xxxx1',xxx2='xxx2',xxx3='xxx3' where 0;
		$sql = 'update '.$table.' set ';
		foreach($data as $k=>$v){
			$sql.= $k."='".$v."',";
		}
		$sql = rtrim($sql,',');
		$sql.=' where '.$where;
		return mQuery($sql);
	}	
}
// $data = array('catname'=>'老王八69','num'=>69);
// $a=mExec('cat',$data);
// var_dump($a);
/**
 * 返回最近一次insert产生的主键值
 * @return int id数值
 */
function getLastId(){
	return mysql_insert_id(mConn());
}
